home *** CD-ROM | disk | FTP | other *** search
Text File | 1987-02-09 | 2.2 KB | 94 lines | [TEXT/MSBB] |
- ' 3D Function Plot
- ' ©MacTutor 1987
- ' By Dave Kelly
- ' Requires CLR Graph3DLib
-
- DIM y!(100,100)
- ' Be sure to set library volume to your own volume
- LIBRARY "XP™ 40-6:Software Dev:MS Basic:CLR Graph3D:Graph3DLib"
- LIBRARY "XP™ 40-6:Software Dev:MS Basic:CLR Graph3D:Toolbox"
- initialize:
- WINDOW 1 'Be sure a window is open!
- OpenPort3D 'Set 3D output to window 1
- ' Next initialize variables to be used in library calls.
- x1!=0:x2!=0:y1!=0:y2!=0:zero!=0
- xpt!=0:ypt!=0:zpt!=0:z!=0
- xAngle!=0:yAngle!=0:zAngle!=0:Angle!=0
- SetRect viewrect1%(1),50,50,250,250 'set the viewport rectangle
- ' convert single precision to fixed point values
- Fs2Fix -10!,x1!
- Fs2Fix -10!,y1!
- Fs2Fix 10!,x2!
- Fs2Fix 10!,y2!
- Fs2Fix 0!,zero!
- Fs2Fix 45!,xAngle!
- Fs2Fix 45!,yAngle!
- Fs2Fix 0!,zAngle!
- Fs2Fix 25!,Angle!
- viewport viewrect1%(1)
- FRAMERECT (VARPTR(viewrect1%(1)))
- SetRect viewrect2%(1),275,50,475,250
- LookAt x1!,y1!,x2!,y2!
- ViewAngle Angle!
- roll zAngle!
- yaw yAngle!
- Pitch xAngle!
- GOSUB Drawaxis
- GOSUB Drawing1
- viewport viewrect2%(1)
- FRAMERECT (VARPTR(viewrect2%(1)))
- GOSUB Drawaxis
- GOSUB Drawing2
- WHILE MOUSE(0)<>1:WEND
- END
- Drawaxis:
- ' Draw x axis
- moveto3d zero!,zero!,zero!
- lineto3d x2!,zero!,zero!
- ' Draw y axis
- moveto3d zero!,zero!,zero!
- lineto3d zero!,x2!,zero!
- ' Draw z axis
- moveto3d zero!,zero!,zero!
- lineto3d zero!,zero!,x2!
- RETURN
- Drawing1:
- Calculate: ' calulate equation y = SIN(z)
- FOR x!=0 TO 10
- FOR z=0 TO 10
- y!(x,z)=SIN(z)
- NEXT z
- NEXT x
- Plot:
- FOR x!=0 TO 10
- Fs2Fix x!,xpt!
- moveto3d xpt!,zero!,zero!
- FOR z!=0 TO 10
- Fs2Fix y(x,z),ypt!
- Fs2Fix z!,zpt!
- lineto3d xpt!,ypt!,zpt!
- NEXT
- NEXT
- RETURN
- Drawing2:
- Calculate: ' calulate equation y = 9 - (Z^2)
- FOR x!=-5 TO 5
- FOR z=-5 TO 5
- y!(x+5,z+5)=9-(z^2)
- NEXT z
- NEXT x
- Plot:
- FOR x!=-5 TO 5
- Fs2Fix x!,xpt!
- Fs2Fix y!(x+5,0),ypt!
- Fs2Fix -5!,zpt!
- moveto3d xpt!,ypt!,zpt!
- FOR z!=-5 TO 5
- Fs2Fix y(x+5,z+5),ypt!
- Fs2Fix z!,zpt!
- lineto3d xpt!,ypt!,zpt!
- NEXT
- NEXT
- RETURN
-
-